;17.2 练习使用int 16h，接受用户输入r,g,b改文字颜色
assume cs:code
code segment
	start:
	mov ah,0
	int 16h ;ps:将读取的扫描码送入ah,ascii码送入al
	
	;假设用户按了一次r键，后面1,2,3...等模拟一次执行过程
	
	mov ah,1			;1:------ah=0000 0001b
	cmp al,'r' ;r的扫描通码是13h= 0001 0011b
	je red
	cmp al,'g'
	je green
	cmp al,'b'
	je blue
	jmp short sret
	
	red:
	shl ah,1            ;2:---------ah=0000 0011b
	green:
	shl ah,1            ;3:---------------ah=0000 0111b
	
	blue:
	mov bx,0b800h		;4:-------bx=b800h:在文本模式下的显存起始地址；
	mov es,bx			;5:-------es=b800h
	mov bx,1			;6:-------bx=1
	mov cx,2000			;7:-------cx=2000 = 07D0h：显存缓冲区共有2000个字符，大小：80X25
	
	s:
	and byte ptr es:[bx],11111000b ;8:---------将b800:0001中存储的数据 和11111000b作 与 运算（作用是将后3位置0）
	or es:[bx],ah                  ;9:------将b800:0001中的数据 和 ah= 0000 0111b 作 或 运算（）
	add bx,2						;10:
	loop s
	
	sret:
	mov ax,4c00h
	int 21h
	
code ends
end start